Multi-factor authentication is an access control approach that provides a higher degree of security than the single-factor approaches that have been traditionally employed. Multi-factor authentication may employ two or more authentication factors selected from what the user knows (e.g., passwords, knowledge-based questions, etc.), what the user has (e.g., a one-time password generated by a token, a one-time password sent via a different communication channel, etc.), and who the user is (e.g., fingerprint scans or other biometric data). For example, to successfully log in to a network service, a user may have to provide a username, a password, and a one-time password generated by a hardware token. Thus, a malicious user who has compromised the username and password cannot log in without also having access to the hardware token. One-time passwords may be generated via time-based one-time password algorithms, hash chains, and other approaches.